package com.xiaoke.java;

import java.util.Date;

public class LocalVariableTest {

    private int count = 0;


    public static void main(String[] args) {
        LocalVariableTest test = new LocalVariableTest();
        int num = 10;
        test.test1();


    }

    public LocalVariableTest() {
        this.count = 1;
    }

    //练习
    public static void testStatic(){
        LocalVariableTest test = new LocalVariableTest();
        Date date = new Date();
        int count = 10;

        System.out.println(count);
        //因为this变量不存在于当前方法(static 方法）的局部变量表中！！
        //System.out.println(this.count);
    }

    private void test1() {

        Date date = new Date();
        String name ="xiaoke";
        test2(date,name);
        count++;
        System.out.println(date+name);
    }

    public  String test2(Date dataP, String name2){
        dataP = null;
        name2 = "xiaodiandian";
        double weight = 130.6; //占据两个slot
        char gender = '男';
        return dataP+name2;
    }

    public void  test3(){
        this.count++;
    }

    public void test4(){
        int a = 0;
        {
            int b = 0;
            b = a+1;
        }

        //变量c使用之前已经销毁变量b占据的slot的位置
        int c = a + 1;

    }

    /**
     * 变量的分类：按照数据类型分： ①基本数据类型  ② 引用数据类型
     *          按照在类中的声明的位置分：①成员变量：在使用前都经历过默认初始化赋值
     *                                  类变量: linking的prepare阶段：给类变量默认赋值 ---> initial阶段：给类变量显式赋值即静态代码块赋值
     *                                  实例变量: 随着对象的创建。会在堆空间中分配实例变量空间，并进行默认赋值
     *                               ②局部变量：在使用前，必须进行显示赋值的！！！否则编译不通过
     */

    public void test5Temp(){
        int num;
        //System.out.println(num);//错误信息：变量num未进行初始化
    }

}
